home *** CD-ROM | disk | FTP | other *** search
/ Family Forum 261 / SOMC Family Forum 261.iso / Xtras / Animation Wizard.dir / 00011_Script_Bullets < prev    next >
Text File  |  1997-05-10  |  20KB  |  582 lines

  1. -- Bullets script
  2.  
  3. property ioFieldList
  4. property iFieldFocus
  5. property ioFieldFocus
  6. property iCurrentMotionStyleIndex
  7. property iCurrentVisualStyleIndex
  8.  
  9. -- The motion styles are:
  10. property ikMotionInstant  -- 1
  11. property ikMotionWipe  -- 2
  12. property ikMotionRoll  -- 3
  13. property ikMotionRipple  -- 4
  14.  
  15. property iFirstTIme
  16. property iSaveSeconds
  17. property iSaveFPS
  18. property iSaveDelayEnter
  19. property iSaveDelayHold
  20. property iSaveMark
  21. --property iSaveCycles
  22. property iSaveAnimateTitle
  23.  
  24. on birth me
  25.   global goBulletsText
  26.   global goSeconds
  27.   global goFPS
  28.   global goDelayEnter
  29.   global goDelayHold
  30.   
  31.   -- global goCycles
  32.   
  33.   set ioFieldList = [goBulletsText, goSeconds, goFPS, goDelayEnter, goDelayHold]
  34.   set ikMotionInstant = 1
  35.   set ikMotionWipe = 2
  36.   set ikMotionRoll = 3
  37.   set ikMotionRipple = 4
  38.   
  39.   set iCurrentMotionStyleIndex = ikMotionInstant
  40.   set iCurrentVisualStyleIndex = 1
  41.   set iFieldFocus = 1
  42.   set iFirstTime = TRUE
  43.   
  44.   return me
  45. end birth
  46.  
  47. on mInit me
  48.   global goSeconds
  49.   global goFPS
  50.   global goDelayEnter
  51.   global goDelayHold
  52.   --global goCycles
  53.   global goBullets
  54.   global goMarkFrame
  55.   global goAnimateTitle
  56.   global goVisualStyles
  57.   global goMotionStyles
  58.   global goScoreMgr
  59.   
  60.   
  61.   -- CheckMark parameter: channel
  62.   mInit(goMarkFrame, 4)  -- channel
  63.   
  64.   -- CheckMark parameter: channel
  65.   mInit(goAnimateTitle, 22)  -- channel
  66.   
  67.   if iFirstTime then  -- use intellegent defaults
  68.     mSetValue(goSeconds, 5)
  69.     mSetValue(goFPS, 5)
  70.     mSetValue(goDelayEnter, 5)
  71.     mSetValue(goDelayHold, 5)
  72.     --  mSetValue(goCycles, 1)
  73.     mSetValue(goMarkFrame, TRUE)
  74.     mSetValue(goAnimateTitle, TRUE)
  75.     set iFirstTime = FALSE
  76.   else  -- use values saved from when we last left
  77.     mSetValue(goSeconds, iSaveSeconds)
  78.     mSetValue(goFPS, iSaveFPS)
  79.     mSetValue(goDelayEnter, iSaveDelayEnter)
  80.     mSetValue(goDelayHold, iSaveDelayHold)
  81.     -- mSetValue(goCycles, iSaveCycles)
  82.     mSetValue(goMarkFrame, iSaveMark)
  83.     mSetValue(goAnimateTitle, iSaveAnimateTitle)
  84.   end if
  85.   set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  86.   
  87.   -- RadioButtons parameters: channel, nChannels, rightAnswer, default
  88.   set goMotionStyles = 0
  89.   set goMotionStyles = birth(script "RadioButton",  26, 4, 0, iCurrentMotionStyleIndex)
  90.   
  91.   -- VisualStyles Params: castNum, default, nItems, channel
  92.   if the machineType < 256 then
  93.     mInit(goVisualStyles, the number of cast "BulletsVisualStylesMac", ¼
  94.                iCurrentVisualStyleIndex, 8, 19)
  95.   else
  96.     mInit(goVisualStyles, the number of cast "BulletsVisualStylesPC", ¼
  97.                iCurrentVisualStyleIndex, 8, 19)
  98.   end if
  99.   
  100.   -- For keystroke validity checking
  101.   set the keydownscript =  "mCheckKey(goBullets)"
  102.   
  103. end mInit 
  104.  
  105. on mSetFieldFocus me, oWhom
  106.   set where = getOne(ioFieldList, oWhom)
  107.   if where = 0 then
  108.     alert("Internal error - mSetFieldFocus could not find object")
  109.     return
  110.   end if
  111.   
  112.   set iFieldFocus = where  
  113.   set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  114.   
  115. end mSetFieldFocus
  116.  
  117. on mCheckKey me
  118.   if the Key = TAB then -- change focus to the next field
  119.     set iFieldFocus = IncrMod(iFieldFocus, count(ioFieldList))
  120.     set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  121.     pass  -- pass the event so the hilight goes to the next field  
  122.   else
  123.     if iFieldFocus = 1 then -- the text entry field, allow anything
  124.       pass
  125.     else  -- numeric fields, only allow digits
  126.       if (offset(the key, "0123456789") > 0) or (the key = BACKSPACE)  then
  127.         pass
  128.       else
  129.         dontPassEvent -- restrict only to digits.
  130.       end if
  131.     end if
  132.   end if
  133. end mCheckKey
  134.  
  135. on mSetNewMotionStyle me, theNewStyleIndex
  136.   set iCurrentMotionStyleIndex = theNewStyleIndex
  137. end mSetNewMotionStyle
  138.  
  139. on mSetNewVisualStyle me, theNewStyleIndex
  140.   set iCurrentVisualStyleIndex = theNewStyleIndex
  141. end mSetNewVisualStyle
  142.  
  143.  
  144.  
  145. on mValidate me
  146.   -- Attempt to validate the last field of focus
  147.   set lastFieldOKFlag = mValidate(ioFIeldFocus)
  148.   return lastFieldOKFlag
  149. end mValidate
  150.  
  151.  
  152.  
  153. on mParseField me, theTextToParse, theHeaderFont, theHeaderSize, ¼
  154.                theBodyFont, theBodySize
  155.   global gCastNumTextAsBitmap
  156.   
  157.   
  158.   set castNumHeader = mModifyRichTextCM(goCastMgr, ¼
  159.                 line 1 of theTextToParse, theHeaderFont, theHeaderSize)
  160.   if castNumHeader = 0 then  -- error
  161.     return FALSE
  162.   end if  
  163.   
  164.   --  Create a cast member in the stage movie  
  165.   set castNumHeaderTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  166.   copyToClipBoard member castNumHeader
  167.   tell the stage
  168.     pasteClipboardInto member castNumHeaderTarget
  169.     set the name of member castNumHeaderTarget  = "RichText" && string(the ticks)
  170.   end tell
  171.   
  172.   set castNumList = [castNumHeaderTarget]
  173.   set maxWidth = 0
  174.   
  175.   -- The following does an effective "Convert to bitmap" into a 
  176.   -- known bitmap cast member to get size info.  
  177.   set the picture of member gCastNumTextAsBitmap = ¼
  178.         the picture of member castNumHeader
  179.   set maxWidth = the width of member gCastNumTextAsBitmap  
  180.   set heightHeader = the height of member castNumHeader / ¼
  181.                                                 the number of lines in (the text of member castNumHeader)
  182.   
  183.   repeat with thisLine = 2 to the number of lines in theTextToParse
  184.     set thisBodyLine = line thisLine of theTextToParse
  185.     -- And again for each line of the Body
  186.     set castNumBody = mModifyRichTextCM(goCastMgr, ¼
  187.                 thisBodyLine, theBodyFont, theBodySize)
  188.     if castNumBody = 0 then  -- error
  189.       return FALSE
  190.     end if  
  191.     
  192.     --  Create a cast member in the stage movie  
  193.     set castNumBodyTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  194.     copyToClipBoard member castNumBody
  195.     tell the stage
  196.       pasteClipboardInto member castNumBodyTarget
  197.       set the name of member castNumBodyTarget  = "RichText" && string(the ticks)
  198.     end tell
  199.     add(castNumList, castNumBodyTarget)  
  200.     -- The following does an effective "Convert to bitmap" into a 
  201.     -- known bitmap cast member to get size info.  
  202.     set the picture of member gCastNumTextAsBitmap = ¼
  203.         the picture of member castNumBody
  204.     set thisWidth = the width of member gCastNumTextAsBitmap
  205.     if thisWidth > maxWidth then
  206.       set maxWidth = thisWidth
  207.     end if
  208.     
  209.   end repeat
  210.   set heightBody = the height of member castNumBody / ¼
  211.                                                 the number of lines in (the text of member castNumBody)
  212.   -- Finally add the maximum height and width onto the end of the list
  213.   set maxHeight = Max(heightHeader, heightBody)
  214.   add(castNumList, maxHeight)
  215.   add(castNumList, maxWidth)
  216.   
  217.   return castNumList
  218. end mParseField
  219.  
  220.  
  221.  
  222.  
  223.  
  224. on mCreate me
  225.   global goMarkFrame
  226.   global goMotionStyles
  227.   global goVisualStyles
  228.   global goScoreMgr
  229.   global goCastMgr
  230.   global gDevelopmentFlag
  231.   global gCastNumTextAsBitmap
  232.   global goAnimateTitle
  233.   global goPlatform
  234.   
  235.   if not(mValidate(me)) then
  236.     return
  237.   end if
  238.   if the last char of field "BulletsText" = RETURN then
  239.     delete the last char of field "BulletsText"
  240.   end if
  241.   if field("BulletsText") = EMPTY then
  242.     alert("Please enter some text for the Bullet.")
  243.     return
  244.   end if
  245.   if the number of lines in field("BulletsText") < 2 then 
  246.     alert("Bullets requires at least two lines of text, one header and any number of bullets.")
  247.     return
  248.   end if
  249.   
  250.   
  251.   tell the stage
  252.     set theStageFrame = the frame
  253.   end tell
  254.   
  255.   set castNumVisualStyle = mGetCastNum(goVisualStyles, iCurrentVisualStyleIndex)
  256.   set theVisualStyleName = the name of cast castNumVisualStyle
  257.   set theHeaderFont = word 2 of theVisualStyleName
  258.   set theHeaderSize = word 3 of theVisualStyleName
  259.   set theBodyFont = word 4 of theVisualStyleName
  260.   set theBodySize = word 5 of theVisualStyleName
  261.   set theSeconds = integer(field "Seconds")
  262.   set animateTitleFlag = mGetValue(goAnimateTitle)
  263.   
  264.   set fps = integer(field "FPS")
  265.   set nFrames = integer(theSeconds * fps)
  266.   set delayEnter = integer(field "DelayEnter")
  267.   set delayHold = integer(field "DelayHold")
  268.   --  set nCycles = integer(field "Cycles")
  269.   set markFirst = mGetValue(goMarkFrame)
  270.   
  271.   
  272.   set theForeColor  = 255
  273.   set theBackColor  = 0
  274.   
  275.   --Insert bullet characters (or dashes) before bullets lines
  276.   if the machineType < 256 then
  277.     set charsToPrepend = "ò  "
  278.   else
  279.     set charsToPrepend = "-  "
  280.   end if
  281.   set nSourceLines = the number of lines in field "BulletsText"
  282.   set theSourceText = field "BulletsText"
  283.   repeat with thisLine = 2 to nSourceLines
  284.     put charsToPrepend before line thisLine of theSourceText
  285.   end repeat
  286.   
  287.   -- The returned List contains a list of generated cast members to display
  288.   --  item 1 is the Header, all others are bullets
  289.   --  the last item is the maximum width
  290.   set bulletsList = mParseField(me, theSourceText,¼
  291.                            theHeaderFont, theHeaderSize, theBodyFont, theBodySize)
  292.   if bulletsList = FALSE then --error
  293.     return
  294.   end if
  295.   
  296.   -- Pull maxWidth off the end of the list
  297.   set widthIndex = count(bulletsList)
  298.   set maxWidth = getAt(bulletsList, widthIndex)
  299.   deleteAt(bulletsList, widthIndex)  
  300.   -- Pull maxHeight off end of the list
  301.   set heightIndex = count(bulletsList)
  302.   set maxHeight = getAt(bulletsList, heightIndex)
  303.   deleteAt(bulletsList, heightIndex)  
  304.   
  305.   set theStageWidth = mGetStageWidth(goScoreMgr)
  306.   set leftEdge = integer((theStageWidth / 2) - (maxWidth / 2))
  307.   set theStageHeight = mGetStageHeight(goScoreMgr)
  308.   set nextV = integer((theStageHeight / 2) - ((nSourceLines * value(maxHeight))/ 2))
  309.   set locVList = []
  310.   repeat with thisLine = 1 to nSourceLines
  311.     add(locVList, nextV)
  312.     set nextV = nextV + value(maxHeight)
  313.   end repeat
  314.   
  315.   case iCurrentMotionStyleIndex of  
  316.     ikMotionInstant: 
  317.       set thisTransition = "Dissolve, Pixels Fast"
  318.       if animateTitleFlag then
  319.         set nFrames = 1
  320.       else
  321.         set nFrames = 2
  322.       end if 
  323.       
  324.     ikMotionWipe:
  325.       set thisTransition = "Wipe Down"
  326.       if animateTitleFlag then
  327.         set nFrames = 1
  328.       else
  329.         set nFrames =  2
  330.       end if 
  331.       
  332.     ikMotionRoll:
  333.       set thisTransition = 0
  334.       set nFramesPerTransition = (theSeconds * fps) + 1
  335.       if animateTitleFlag then
  336.         set nFrames = nFramesPerTransition * nSourceLines
  337.       else
  338.         set nFrames = (nFramesPerTransition * (nSourceLines - 1)) + 1
  339.       end if 
  340.       
  341.     ikMotionRipple:
  342.       set thisTransition = 0
  343.       set nAnimationFrames = (theSeconds * fps) 
  344.       if animateTitleFlag then
  345.         set nFrames = nAnimationFrames + 1
  346.       else
  347.         set nFrames =  nAnimationFrames + 2
  348.       end if 
  349.       
  350.   end case
  351.   
  352.   -- Call the ScoreMgr to set up the score, # of frames, and nSourceLines channels
  353.   if not(mInit(goScoreMgr, nFrames, nSourceLines)) then
  354.     return
  355.   end if
  356.   
  357.   -- Create a list of available channels from the users selection
  358.   set chList = []
  359.   repeat with i = 1 to nSourceLines
  360.     set chNext = mGetNextSelectedChannel(goScoreMgr)
  361.     add(chList, chNext)
  362.   end repeat
  363.   set theFrameNum = mGetStartFrame(goScoreMgr)
  364.   
  365.   -- initialize list of frames to record in
  366.   set frameList  = []
  367.   repeat with i = theFrameNum  to  (theFrameNum + nFrames  - 1)
  368.     add(frameList, [i])
  369.   end repeat
  370.   
  371.   -- Mark first frame upon request
  372.   if markFirst  then
  373.     set theLabel  = "AW.Bullet." & word 1 of the text of field "BulletsText" & " " & ¼
  374.               mGetGeneratedScoreSelection(goScoreMgr)
  375.     set firstFrame = getAt(frameList, 1)
  376.     add(firstFrame,  [#label, theLabel])
  377.     setAt(frameList, 1, firstFrame)
  378.   end if
  379.   set relFrameCount = 1
  380.   
  381.   -- If we're not animating the title, put it into the score
  382.   if not(animateTitleFlag) then 
  383.     if thisTransition <> 0 then
  384.       set currentFrame = getAt(frameList, relFrameCount)
  385.       add(currentFrame, [#transition, thisTransition])
  386.       setAt(frameList, relFrameCount, currentFrame)
  387.     end if
  388.     set chHeader = getAt(chList, 1)
  389.     set castNumHeader = getAt(bulletsList, 1)
  390.     set locVHeader = getAt(locVList, 1)
  391.     set currentFrame = getAt(frameList, relFrameCount)
  392.     add(currentFrame, [#tempo, -delayEnter])
  393.     add(currentFrame, [#sprite, chHeader, castNumHeader, theForeColor, theBackColor, leftEdge, locVHeader, 0, 0])
  394.     setAt(frameList, relFrameCount, currentFrame)
  395.     set theFrameNum = theFrameNum + 1
  396.     set relFrameCount = relFrameCount + 1
  397.   end if
  398.   
  399.   
  400.   if (iCurrentMotionStyleIndex = ikMotionInstant) or ¼
  401.       (iCurrentMotionStyleIndex = ikMotionWipe)  then 
  402.     set currentFrame = getAt(frameList, relFrameCount)
  403.     add(currentFrame, [#transition, thisTransition])
  404.     repeat with thisItem = 1 to nSourceLines
  405.       set chItem = getAt(chList, thisItem)
  406.       set castNumItem = getAt(bulletsList, thisItem)
  407.       set locVItem = getAt(locVList, thisItem)
  408.       add(currentFrame, [#tempo, -delayHold])
  409.       add(currentFrame, [#sprite, chItem, castNumItem, theForeColor, theBackColor, leftEdge, locVItem, 0, 0])
  410.       setAt(frameList, relFrameCount, currentFrame)
  411.     end repeat
  412.     set theFrameNum = theFrameNum + 1
  413.     set relFrameCount = relFrameCount + 1
  414.     
  415.   else  -- ikMotionRoll or ikMotionRipple
  416.     
  417.     set theStageRight = mGetStageRight(goScoreMgr)
  418.     set offStagePos = theStageRight + 10
  419.     if animateTitleFlag then
  420.       set startItem = 1
  421.       set locHList = []
  422.     else
  423.       set startItem = 2
  424.       set locHList = [leftEdge]  -- start the title already at the left edge
  425.     end if 
  426.     
  427.     
  428.     if (iCurrentMotionStyleIndex = ikMotionRoll) then  -- Roll
  429.       -- Create the starting locH list, start all offstage right
  430.       repeat with i = startItem to nSourceLines
  431.         add(locHList, offStagePos)
  432.       end repeat
  433.       set nFramesPerAnimation = theSeconds * fps
  434.       set hInc = float(leftEdge - offStagePos) / float(nFramesPerAnimation) 
  435.       
  436.       repeat with thisBullet = startItem to nSourceLines
  437.         set thisH = getAt(locHList, thisBullet)
  438.         set currentFrame = getAt(frameList, relFrameCount)
  439.         add(currentFrame, [#tempo, fps])
  440.         setAt(frameList, relFrameCount, currentFrame)
  441.         repeat with i = 1 to nFramesPerAnimation
  442.           -- Move the affected bullet
  443.           set thisH = integer(thisH + hInc)
  444.           if thisH < leftEdge then
  445.             set thisH = leftEdge
  446.           end if
  447.           setAt(locHList, thisBullet, thisH)
  448.           -- Write out all sprites in this frame
  449.           set currentFrame = getAt(frameList, relFrameCount)
  450.           repeat with thisItem = 1 to nSourceLines
  451.             set chItem = getAt(chList, thisItem)
  452.             set castNumItem = getAt(bulletsList, thisItem)
  453.             set locVItem = getAt(locVList, thisItem)
  454.             set locHItem = getAt(locHList, thisItem)
  455.             add(currentFrame, [#sprite, chItem, castNumItem, theForeColor, theBackColor, locHItem, locVItem, 0, 0])  
  456.           end repeat  -- this Item
  457.           setAt(frameList, relFrameCount, currentFrame)
  458.           set theFrameNum = theFrameNum + 1
  459.           set relFrameCount = relFrameCount + 1
  460.         end repeat  -- thisH
  461.         -- Now generate hold frames at the end 
  462.         set currentFrame = getAt(frameList, relFrameCount)
  463.         add(currentFrame, [#tempo, -delayHold])
  464.         repeat with thisItem = 1 to nSourceLines
  465.           set chItem = getAt(chList, thisItem)
  466.           set castNumItem = getAt(bulletsList, thisItem)
  467.           set locVItem = getAt(locVList, thisItem)
  468.           set locHItem = getAt(locHList, thisItem)
  469.           add(currentFrame, [#sprite, chItem, castNumItem,  theForeColor, theBackColor, locHItem, locVItem, 0, 0])  
  470.         end repeat
  471.         setAt(frameList, relFrameCount, currentFrame)
  472.         set theFrameNum = theFrameNum + 1
  473.         set relFrameCount = relFrameCount + 1
  474.       end repeat  -- thisBullet
  475.       
  476.     else  -- ikMotionRipple
  477.       -- Build the locH starting list staggered
  478.       
  479.       -- nAnimationFrames tell you how many frames of animation we have
  480.       -- from this, we calculate the staggerOffset, and the horizontal increment.
  481.       set nBulletsToMove = nSourceLines - startItem + 1
  482.       set pctOverlap = 0.25  -- percentage of overlap
  483.       set hDistance1Line = float(leftEdge - offStagePos)
  484.       set effectiveNLines = 1.0 + (pctOverLap * nBulletsToMove)
  485.       set totalHDistance = effectiveNLines * hDistance1Line
  486.       set hInc = totalHDistance / float(nAnimationFrames)      
  487.       set staggerOffset = -1 * integer(hDistance1Line * pctOverLap)
  488.       
  489.       set multiplier  = 0
  490.       repeat with thisItem = startItem to nSourceLines
  491.         set startingPos = offStagePos + (multiplier * staggerOffset)
  492.         add(locHList, startingPos)
  493.         set multiplier = multiplier + 1
  494.       end repeat      
  495.       
  496.       set currentFrame = getAt(frameList, relFrameCount)
  497.       add(currentFrame, [#tempo, fps])
  498.       setAt(frameList, relFrameCount, currentFrame)
  499.       repeat with animFrame = 1 to nAnimationFrames
  500.         -- Write out all sprites in this frame using their h and v loc's
  501.         set currentFrame = getAt(frameList, relFrameCount)
  502.         repeat with thisBullet = 1 to nSourceLines
  503.           set chItem = getAt(chList, thisBullet)
  504.           set castNumItem = getAt(bulletsList, thisBullet)
  505.           set locVItem = getAt(locVList, thisBullet)
  506.           set locHItem = getAt(locHList, thisBullet)
  507.           add(currentFrame, [#sprite, chItem, castNumItem,  theForeColor, theBackColor, locHItem, locVItem, 0, 0])
  508.           
  509.           -- Now, slide that bullet if needed
  510.           if locHItem > leftEdge then
  511.             set thisH = integer(locHItem + hInc)
  512.             if thisH < leftEdge then
  513.               set thisH = leftEdge
  514.             end if
  515.             setAt(locHList, thisBullet, thisH)
  516.           end if         
  517.         end repeat -- thisBullet
  518.         setAt(frameList, relFrameCount, currentFrame)
  519.         set relFrameCount = relFrameCount + 1
  520.         set theFrameNum = theFrameNum + 1
  521.       end repeat -- animFrame
  522.       
  523.       set currentFrame = getAt(frameList, relFrameCount)
  524.       add(currentFrame, [#tempo, -delayhold])
  525.       repeat with thisItem = 1 to nSourceLines
  526.         set chItem = getAt(chList, thisItem)
  527.         set castNumItem = getAt(bulletsList, thisItem)
  528.         set locVItem = getAt(locVList, thisItem)
  529.         
  530.         add(currentFrame, [#sprite, chItem, castNumItem, theForeColor, theBackColor, leftEdge, locVItem, 0, 0])  
  531.       end repeat
  532.       setAt(frameList, relFrameCount, currentFrame)
  533.       
  534.       set theFrameNum = theFrameNum + 1
  535.       set relFrameCount = relFrameCount + 1 
  536.       
  537.     end if  -- ikMotionRipple   
  538.     
  539.   end if  -- ikMotionRoll or ikMotionRipple
  540.   
  541.   mWriteFrame(goScoreMgr, frameList)
  542.   
  543.   set labelName = "Bullets" & goPlatform
  544.   go  label(labelName) + 2  -- to display reselect button
  545.   
  546.   if not(gDevelopmentFlag) then
  547.     tell the stage
  548.       go frame theStageFrame
  549.     end tell
  550.   end if 
  551.   
  552.   mClean(goScoreMgr)
  553.   
  554. end mCreate
  555.  
  556.  
  557.  
  558. on mCleanup me
  559.   global goMotionStyles
  560.   global goAnimateTitle
  561.   global goSeconds
  562.   global goFPS
  563.   global goDelayEnter
  564.   global goDelayHold
  565.   --global goCycles
  566.   global goMarkFrame
  567.   
  568.   mCleanup(goMotionStyles)
  569.   
  570.   set iSaveSeconds =  mGetValue(goSeconds)
  571.   set iSaveFPS = mGetValue(goFPS)
  572.   set iSaveDelayEnter = mGetValue(goDelayEnter)
  573.   set iSaveDelayHold = mGetValue(goDelayHold)
  574.   --set iSaveCycles = mGetValue(goCycles)  
  575.   set iSaveMark = mGetValue(goMarkFrame)  
  576.   set iSaveAnimateTitle = mGetValue(goAnimateTitle)  
  577.   
  578.   mCleanup(goMarkFrame)
  579.   mCleanup(goAnimateTitle)  
  580. end mCleanup
  581.  
  582.